package spring.mvc.config;

import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;

/**
    SpringMVC的初始化器类，该类继承AbstractAnnotationConfigDispatcherServletInitializer类
 * 并重写其中的三个方法:
 *  1.getRootConfigClasses():配置根容器配置类
 *  2.getServletConfigClasses():配置Servlet容器配置类
 *  3.getServletMappings():配置DispatcherServlet的访问路径(SpringMVC的入口)
 *  当tomcat服务器启动时，该类的实例会被自动创建
 */
public class AppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
/*
* getRootConfigClasses
* getServletConfigClasses  这两个管理相关配置类
* */
    //根容器配置类  =之前的spring 的配置类
    @Override
    protected Class<?>[] getRootConfigClasses() {
        return new Class[]{RootConfig.class};
    }

    /**
     * Web容器配置类(SpringMVC配置类)
     * @return
     */
    @Override
    protected Class<?>[] getServletConfigClasses() {
        return new Class[]{MvcConfig.class};
    }


    /**
     * SpringMVC的入口访问路径(DispatcherServlet的访问路径)
     * 配置那些访问路径会被SpringMVC拦截到,一旦被SpringMVC拦截到
     *                  就会交给SpringMVC的处理流程来处理请求
     * 拦截路径设置:
     *  "/":拦截所有请求，但jsp除外
     *  "/*":拦截所有请求
     *  "*.do":设置具体路径，拦截所有以.do结尾的请求
     *  我们在使用时一般使用"/*"拦截所有路径,并在MVC配置文件中设置对静态资源放行(不拦截静态资源)
     *
     * @return
     */
    @Override
    protected String[] getServletMappings() {

        return new String[]{"/"};
    }
}
